package zenproject.meditation.android.ui.sketch.clear; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.graphics.Point; import android.util.AttributeSet; import android.view.View; public class ClearView extends View { private ClearDrawable clearDrawable; public ClearView(Context context, AttributeSet attrs) { super(context, attrs); } public ClearView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { clearDrawable = ClearDrawable.newInstance(getContext()); setBackground(clearDrawable); } public void startClearWith(final Animator.AnimatorListener animatorListener) { clearDrawable.startRadiusAnimation(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { show(); animatorListener.onAnimationStart(animation); } @Override public void onAnimationEnd(Animator animation) { animatorListener.onAnimationEnd(animation); clearDrawable.startAlphaAnimation(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { hide(); } }); } @Override public void onAnimationCancel(Animator animation) { animatorListener.onAnimationCancel(animation); } @Override public void onAnimationRepeat(Animator animation) { animatorListener.onAnimationRepeat(animation); } }); } private void show() { setVisibility(VISIBLE); } private void hide() { setVisibility(GONE); } public void setClearOrigin(Point origin) { clearDrawable.setOrigin(origin); } public void setClearRadius(float radius) { clearDrawable.setRadius(radius); } public boolean isClearing() { return getVisibility() == VISIBLE; } }